
import { defineStore } from 'pinia';
import { getToken, setToken } from '../utils/token-utils';
import { getLoginNP,getLoginEmail } from '../api/index';


/**
 * 用户信息
 * @methods setUserInfos 设置用户信息
 */
export const useUserInfoStore = defineStore('userInfo', {

	state: () => ({
    token: getToken(),
    user:"",
  }),

	actions: {
    // 登陆的异步action
    async loginNP (loginForm) {
       // 发送登陆的请求
      const result = await getLoginNP(loginForm)
      // 请求成功后, 取出token保存  pinia和local中
      const token = result.data.token
      this.user=result.data.user
      this.token = token
      setToken(token)
    },

    async loginEmail (emailForm) {
      // 发送登陆的请求
     const result = await getLoginEmail(emailForm)
     // 请求成功后, 取出token保存  pinia和local中
     const token = result.data.token
     this.user=result.data.user
     this.token = token
     setToken(token)
   }
    

  },
//   上述代码片段利用了Pinia库，
// 在Vue应用中创建了一个全局状态管理的store，主要用于管理用户信息。

// import { defineStore } from 'pinia';：
// 从pinia包中引入defineStore方法，
// 这是创建Pinia store的核心函数。

// import { getToken, removeToken, setToken } from '../utils/token-utils';：
// 从token-utils.js文件中引入了三个基于token的实用函数，
// 这些函数可能用于从本地存储获取、设置和移除用户的JWT（Json Web Tokens）。

// import { getLogin, getUserInfo } from '../api/index';：
// 从api模块中引入getLogin和getUserInfo函数，
// 这些函数可能用于发起登录请求和获取用户信息的API调用。

// 接下来是store的定义：

// export const useUserInfoStore = defineStore('userInfo', {...})：
// 定义了一个名为userInfo的store，
// 提供了全局访问和响应式状态管理（如token, nickName, uid）。

// Store内容详解：

// state: 定义了store的状态，它返回一个包含token, nickName, uid属性的对象。
// token是通过getToken函数从本地存储提取的，
// 而nickName和uid的初始值为空字符串。

// actions: 定义了处理用户信息的异步函数集合。这包括：

// login(loginForm): 用户登录的异步action，
// 通过调用getLogin(loginForm)与后端通信，
// 获取token后保存到Pinia状态和本地存储中。

// getInfo(): 异步action，用于获取用户信息。
// 调用getUserInfo()获取用户信息，并更新store中的nickName和uid。



// initUserInfo(): 用于初始化用户信息的方法，将从本地存储中移除token，
// 并重置nickName和uid到初始状态。同时，还打印了一个日志'1111111111'。






// 总结：此代码创建了Pinia的一个store模块来全局管理用户登录状态和信息，包括认证token和一些基本用户信息，并且提供了相应的action供组件调用，以处理登录、获取用户信息和初始化用户信息的逻辑。

});